package com.lenovo.leos.letools.lenovodata;

import java.io.File;
import java.util.List;
import java.util.Map;

import com.lenovo.leos.letools.domain.Folder;
import com.lenovo.leos.letools.exception.NetException;
import com.lenovo.leos.letools.utils.JSONParser;

import android.content.Context;
import android.util.Log;

public class UploadDirServer {

	private BaseNetClientServer baseClient;
	
	public UploadDirServer(){
		baseClient = new BaseNetClientServer();
	}
	
	/**
	 * 递归的输出一个指定文件夹下所有子文件夹及文件
	 * @param context
	 * @param dirs
	 */
	public void recursiveListDir(Context context,File[] dirs){
		if(dirs==null) return;
		for(File dir:dirs){
			Log.i("dirname","====="+dir.getName());
			if(dir.isDirectory()){
				recursiveListDir(context,dir.listFiles());
			}
		}
	}
	/**
	 * 将本地文件夹结构，同步到服务器上
	 * @param context
	 * @param dirs
	 * @param parentid 此文件夹的父id(在服务器新建文件夹后生成的id)
	 * @throws NetException
	 */
	public void recursiveCreateDir(Context context,File[] dirs,String parentid)  throws NetException{
		if(dirs==null) return;
		for(File dir:dirs){
			if(dir.isDirectory()){
				Log.i("dirname","====="+dir.getName());
				String returnVal = baseClient.createDir(context,parentid,dir.getName());
				Folder folder = null;
				try {
					folder = JSONParser.parseDir(returnVal);//解析创建文件夹操作后返回的值，能获得此文件夹创建后在服务器端生成的id
				} catch (Exception e) {
					e.printStackTrace();
				}
				recursiveCreateDir(context,dir.listFiles(),folder.getId());
			}
		}
	}
	/**
	 * 将本地文件夹结构，同步到服务器上，同时将"上传本地文件的全路径"和"文件要上传到文件夹id"封装到map中
	 * @param context
	 * @param dirs
	 * @param parentid 此文件夹的父id(在服务器新建文件夹后生成的id)
	 * @param map key为要上传本地文件的全路径   value为文件要上传到文件夹id 
	 * @throws NetException
	 */
	public void recursiveCreateDirAndMapingWholePathAndFileInf(Context context,
			File[] dirs,
			String parentid,
			Map<String,String> map)  throws NetException{
		if(dirs==null) return;
		for(File dir:dirs){
			if(dir.isFile()){
				map.put(dir.getPath(),parentid);
			}
			if(dir.isDirectory()){
				Log.i("dirname","====="+dir.getName());
				String returnVal = baseClient.createDir(context,parentid,dir.getName());
				Folder folder = null;
				try {
					folder = JSONParser.parseDir(returnVal);//解析创建文件夹操作后返回的值，能获得此文件夹创建后在服务器端生成的id
				} catch (Exception e) {
					e.printStackTrace();
				}
				recursiveCreateDirAndMapingWholePathAndFileInf(context,dir.listFiles(),folder.getId(),map);
			}
		}
	}
}
